#include<bits/stdc++.h>
using namespace std;
int n,m,T,k;
int a[100050];
int c[100050];
int rk[18][132000];
char d[18][132000];
int ans=0;
int main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>c[i];
    }
    k=ceil(log2(n));
    for(int i=1;i<=k;i++){
        for(int j=1;j<=pow(2,k-i);j++){
            cin>>d[i][j];
        }
    }
    cin>>T;
    int x[4];
    for(int i=1;i<=T;i++){
        for(int j=0;j<4;j++)cin>>x[j];
    }
    for(int i=1;i<=n;i++){
        a[i]=a[i]^x[i%4];
    }
    for(int i=1;i<=m;i++){
        for(int r=1;r<=ceil(log2(c[i]));r++){
            for(int g=1;g<=pow(2,ceil(log2(c[i]))-r);g++){
                if(a[g*2+d[r][g]-'0']>r){
                    rk[r][g]=g*2+d[r][g]-'0';
                }
                else{
                    if(d[r][g]=='1')rk[r][g]=g*2;
                    else rk[r][g]=g*2+1;
                }
            }
        }
        if(ans==0)ans=rk[(int)ceil(log2(c[i]))][1]*i;
        ans=ans^(rk[(int)ceil(log2(c[i]))][1]*i);
    }
    cout<<ans<<endl;
    return 0;
}
